﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DigDes.DS2012.BusinessObjects;
using DigDes.DS2012.DataAccess;
using System.Data.SqlClient;

namespace DigDes.DS2012.BusinessLogic
{
    /// <summary>
    /// Класс для работы со справочником регионов дорог
    /// </summary>
    public class RegionManager : ManagerBase
    {
        /// <summary>
        /// Получить список всех регионов
        /// </summary>
        /// <returns>Список регионов</returns>
        public IEnumerable<Region> GetRegions()
        {
            using (var cmd = new RegionCommands())
            {
                return cmd.RunInTransaction(GetRegions_res);
            }
        }

        private Region[] GetRegions_res()
        {
            return GetRegions_Internal().ToArray();
        }

        private IEnumerable<Region> GetRegions_Internal()
        {
            using (var cmd = new RegionCommands())
            {
                using (var reader = cmd.GetRegions())
                {
                    while (reader.Read())
                    {
                        yield return InitRegion(reader);
                    }
                }
            }
        }

        /// <summary>
        /// Создание класса регион на основе данных из БД
        /// </summary>
        /// <param name="reader">Данные из БД для текущей записи</param>
        /// <returns>Заполненный объект Регион</returns>
        private Region InitRegion(SqlDataReader reader)
        {
            return new Region()
            {
                Id = Convert.ToInt32(reader["ID"]),
                Title = (string)reader["Name"]
            };
        }
    }
}
